﻿using System;
using System.Collections;
using System.Xml;
using System.Xml.Xsl;
using System.Data;
using System.Web;
using System.Web.Mail;
using InfoJetSoft.Service.Util;

namespace InfoJetSoft.Service.Entity
{
	
	public class Form
	{

		public ArrayList CalculatedFieldList {
			get {
				return calculatedFieldList;
			}
			
			set {
				this.calculatedFieldList = value;
			}
			
		}
		
		public ArrayList ModalMessageList
		{
			get
			{
				return modalMessageList;
			}
			
			set
			{
				this.modalMessageList = value;
			}
			
		}
		
		public string Command
		{
			get
			{
				return command;
			}
			
			set
			{
				this.command = value;
			}
			
		}
		
		public ArrayList ConditionFormatList
		{
			get
			{
				return conditionFormatList;
			}
			
			set
			{
				this.conditionFormatList = value;
			}
			
		}
		
		public string ValueChangeId
		{
			get
			{
				return valueChangeId;
			}
			
			set
			{
				this.valueChangeId = value;
			}
			
		}

		public string ValueChangeFormat {
			get {
				return valueChangeFormat;
			}
			
			set {
				this.valueChangeFormat = value;
			}
			
		}

		public XmlNode ValueChangeNode {
			get {
				return valueChangeNode;
			}
			
			set {
				this.valueChangeNode = value;
			}
			
		}
		
		public XmlNode NewStructureNode 
		{
			get 
			{
				return this.newStructureNode;
			}
			
			set 
			{
				this.newStructureNode = value;
			}
			
		}
		
		public int SchemaValiResult
		{
			get
			{
				return schemaValiResult;
			}
			
			set
			{
				this.schemaValiResult = value;
			}
			
		}
		
		public ArrayList NoBreakIdList
		{
			get
			{
				return noBreakIdList;
			}
			
			set
			{
				this.noBreakIdList = value;
			}
			
		}
		
		public string Action
		{
			get
			{
				return action;
			}
			
			set
			{
				this.action = value;
			}
			
		}
		
		public string ErrCondValiModalMessage
		{
			get
			{
				return errCondValiModalMessage;
			}
			
			set
			{
				this.errCondValiModalMessage = value;
			}
			
		}
		
		public ArrayList XmlToEditFieldList
		{
			get
			{
				return xmlToEditFieldList;
			}
			
			set
			{
				this.xmlToEditFieldList = value;
			}
			
		}
		
		public ArrayList ListIdList
		{
			get
			{
				return listIdList;
			}
			
			set
			{
				this.listIdList = value;
			}
			
		}
		
		public NamespaceResolver XmlNsResolver
		{
			get
			{
				return xmlNsResolver;
			}
			
			set
			{
				this.xmlNsResolver = value;
			}
			
		}
		
		public NamespaceResolver HtmlNsResolver
		{
			get
			{
				return htmlNsResolver;
			}
			
			set
			{
				this.htmlNsResolver = value;
			}
			
		}
		
		public string XdPrefix
		{
			get
			{
				return xdPrefix;
			}
			
			set
			{
				this.xdPrefix = value;
			}
			
		}
		
		public XmlDocument HtmlDoc
		{
			get
			{
				return htmlDoc;
			}
			
			set
			{
				this.htmlDoc = value;
			}
			
		}
		
		public ArrayList FieldList
		{
			get
			{
				return fieldList;
			}
			
			set
			{
				this.fieldList = value;
			}
			
		}
		
		public ArrayList PiFieldList
		{
			get
			{
				return piFieldList;
			}
			
			set
			{
				this.piFieldList = value;
			}
			
		}
		
		public string XsnURI
		{
			get
			{
				return xsnURI;
			}
			
			set
			{
				this.xsnURI = value;
			}
			
		}
		
		public XmlDocument XmlDoc
		{
			get
			{
				return xmlDoc;
			}
			
			set
			{
				this.xmlDoc = value;
			}
			
		}

		public XmlDocument WholeXmlDoc
		{
			get
			{
				return wholeXmlDoc;
			}
			
			set
			{
				this.wholeXmlDoc = value;
			}
			
		}
		
		public string ViewId
		{
			get
			{
				return viewId;
			}
			
			set
			{
				this.viewId = value;
			}
			
		}
		
		public Manifest Manifest
		{
			get
			{
				return manifest;
			}
			
			set
			{
				this.manifest = value;
			}
			
		}
		
		public string MaxLengthValue
		{
			get
			{
				return maxLengthValue;
			}
			
			set
			{
				this.maxLengthValue = value;
			}
			
		}

		public Hashtable DataTable {
			get {
				return this.dataTable;
			}
			
			set {
				this.dataTable = value;
			}
			
		}

		public string CacheXml
		{
			get 
			{
				return this.cacheXml;
			}
			
			set 
			{
				this.cacheXml = value;
			}
			
		}

		public bool IsCloseDoc
		{
			get
			{
				return isCloseDoc;
			}
			
			set
			{
				this.isCloseDoc = value;
			}
			
		}

		public bool IsPromptToSaveChanges
		{
			get
			{
				return isPromptToSaveChanges;
			}
			
			set
			{
				this.isPromptToSaveChanges = value;
			}
			
		}

		public bool IsViewSwitched
		{
			get
			{
				return isViewSwitched;
			}
			
			set
			{
				this.isViewSwitched = value;
			}
			
		}

		public bool IsOnOpenView
		{
			get
			{
				return isOnOpenView;
			}
			set
			{
				this.isOnOpenView = value;
			}
		}

		public Hashtable DataAdapterTable 
		{
			get 
			{
				return this.dataAdapterTable;
			}
			
			set 
			{
				this.dataAdapterTable = value;
			}
			
		}

		public ArrayList UnloadDataObjectList
		{
			get
			{
				return this.unloadDataObjectList;
			}
			
			set
			{
				this.unloadDataObjectList = value;
			}
			
		}
		

		public ArrayList UnauthorizedConnectionList
		{
			get
			{
				return this.unauthorizedConnectionList;
			}
			
			set
			{
				this.unauthorizedConnectionList = value;
			}
			
		}

		public ArrayList LoginConnectionList
		{
			get
			{
				return this.loginConnectionList;
			}
			
			set
			{
				this.loginConnectionList = value;
			}
			
		}

		public ArrayList TextAreaIdList
		{
			get
			{
				return this.textAreaIdList;
			}
			
			set
			{
				this.textAreaIdList = value;
			}
			
		}

		public HttpContext HttpContext
		{
			get
			{
				return this.httpContext;
			}
			
			set
			{
				this.httpContext = value;
			}
			
		}

		public InfoJetContext JetContext
		{
			get
			{
				return this.jetContext;
			}
			
			set
			{
				this.jetContext = value;
			}
			
		}

		public Hashtable ParamTable
		{
			get
			{
				return this.paramTable;
			}
			
			set
			{
				this.paramTable = value;
			}
			
		}

		public bool IsPrintOut
		{
			get
			{
				return this.isPrintOut;
			}
			
			set
			{
				this.isPrintOut = value;
			}
			
		}

		public TaskPane TaskPane
		{
			get
			{
				return this.taskPane;
			}
			
			set
			{
				this.taskPane = value;
			}
			
		}

		public MailEnvelope MailEnvelope
		{
			get
			{
				return this.mailEnvelope;
			}
			
			set
			{
				this.mailEnvelope = value;
			}
			
		}

		public object ManagedCodeModel
		{
			get
			{
				return this.managedCodeModel;
			}
			
			set
			{
				this.managedCodeModel = value;
			}
			
		}

		public ScriptControlContext ScriptControlContext
		{
			get
			{
				return this.scriptControlContext;
			}
			
			set
			{
				this.scriptControlContext = value;
			}
		}

		public Hashtable CodeNodeTable
		{
			get
			{
				return this.codeNodeTable;
			}
			
			set
			{
				this.codeNodeTable = value;
			}
			
		}

		public Hashtable AfterChangeTable
		{
			get
			{
				return this.afterChangeTable;
			}
			
			set
			{
				this.afterChangeTable = value;
			}
			
		}

		public SelectTextNode SelectTextNode
		{
			get
			{
				return this.selectTextNode;
			}
			
			set
			{
				this.selectTextNode = value;
			}
			
		}

		public XmlNode SelectNode
		{
			get
			{
				return this.selectNode;
			}
			
			set
			{
				this.selectNode = value;
				//CID 0216 //2009.01.21 //Begin
				XmlToEditUtil.refreshContextNodeListBySelectNode( this );
				//CID 0216 //2009.01.21 //End
			}
			
		}

		public ArrayList ContextNodeList
		{
			get
			{
				return this.contextNodeList;
			}
			
			set
			{
				this.contextNodeList = value;
			}
		}

		public Export Export
		{
			get
			{
				return this.export;
			}
			
			set
			{
				this.export = value;
			}
			
		}

		public bool DisableAction
		{
			get
			{
				return this.disableAction;
			}
			set
			{
				this.disableAction = value;
			}
		}

		public bool IsFormLoaded
		{
			get
			{
				return this.isFormLoaded;
			}
			set
			{
				this.isFormLoaded = value;
			}
		}

		public string QueryADODataSetId
		{
			get
			{
				return this.queryADODataSetId;
			}
			
			set
			{
				this.queryADODataSetId = value;
			}
			
		}

		public string Id
		{
			get
			{
				return this.id;
			}
			
			set
			{
				this.id = value;
			}
		}

		public bool RunClientCodeOnly
		{
			get
			{
				return this.runClientCodeOnly;
			}
			
			set
			{
				this.runClientCodeOnly = value;
			}
		}

		public bool IsDomReadonly
		{
			get
			{
				return this.isDomReadonly;
			}
			
			set
			{
				this.isDomReadonly = value;
			}
		}

		public ArrayList ClientCodeList
		{
			get
			{
				return this.clientCodeList;
			}
			set
			{
				this.clientCodeList = value;
			}
		}

		public View View
		{
			get
			{
				return this.view;
			}
			set
			{
				this.view = value;
			}
		}

		public ArrayList FieldErrorList
		{
			get
			{
				return this.fieldErrorList;
			}
			set
			{
				this.fieldErrorList = value;
			}
		}

		public Hashtable RestoredBASE64NodeTable
		{
			get
			{
				return this.restoredBASE64NodeTable;
			}
			set
			{
				this.restoredBASE64NodeTable = value;
			}
		}

		public Hashtable CachedBASE64NodeTable
		{
			get
			{
				return this.cachedBASE64NodeTable;
			}
			set
			{
				this.cachedBASE64NodeTable = value;
			}
		}

		public string NewFormPublishUrl
		{
			get
			{
				return this.newFormPublishUrl;
			}
			set
			{
				this.newFormPublishUrl = value;
			}
		}

		public ArrayList ChangedBase64NodeList
		{
			get
			{
				return this.changedBase64NodeList;
			}
			set
			{
				this.changedBase64NodeList = value;
			}
		}

		public FormLogger Logger
		{
			get
			{
				return this.logger;
			}
		}

        public Hashtable PSVITable
        {
            get
            {
                return this.psviTable;
            }
        }

        public ArrayList FormFieldHTMLElementList
        {
            get
            {
                return this.formFieldHTMLElementList;
            }
            set
            {
                this.formFieldHTMLElementList = value;
            }
        }

        public string CachedOldValue
        {
            get
            {
                return this.cachedOldValue;
            }
            set
            {
                this.cachedOldValue = value;
            }
        }

        public ArrayList CachedImageNodeIdList
        {
            get
            { 
                return this.cachedImageNodeIdList;
            }
            set
            {
                this.cachedImageNodeIdList = value;
            }
        }

        public int FocusItemIndex
        {
            get
            {
                return this.focusItemIndex;
            }
            set
            {
                this.focusItemIndex = value;
            }
        }

        public ArrayList SignedDataInfoList
        {
            get
            {
                return this.signedDataInfoList;
            }
            set
            {
                this.signedDataInfoList = value;
            }
        }

        public bool OperationFailed
        {
            get
            {
                return this.operationFailed;
            }
            set
            {
                this.operationFailed = value;
            }
        }

        public ArrayList DatePickerIdList
        {
            get
            {
                return this.datePickerIdList;
            }

            set
            {
                this.datePickerIdList = value;
            }

        }

		private string command = null;
		private string action = null;
		private string xsnURI = null;
		private string viewId = null;
		private View view = null;
		private XmlDocument htmlDoc = null;
		private XmlDocument xmlDoc = null;
		private XmlDocument wholeXmlDoc = null;
		private ArrayList piFieldList = null;
		private ArrayList fieldList = null;
		private ArrayList listIdList = null;
		private ArrayList noBreakIdList = null;
		private Manifest manifest = null;
		private string xdPrefix = null;
		private NamespaceResolver htmlNsResolver = null;
		private NamespaceResolver xmlNsResolver = null;
		private ArrayList xmlToEditFieldList = null;
		private string valueChangeId = null;
		private string valueChangeFormat = null;
		//当一个字段变化引起postback,valueChangeNode用来表示这个字段.
		private XmlNode valueChangeNode = null;
		//当客户端执行一个XmlToEdit操作时,newStructureNode表示被插入的XmlToEdit节.
		//用于OnValidate时确认刚刚进行了XmlToEdit的Insert,并使用newStructureNode作为事件的Source.
		//---也用于页面刷新时,在页面新XmlToEdit元素上重置光标.---还未实现.
		private XmlNode newStructureNode = null;

		private ArrayList conditionFormatList = null;
		private string maxLengthValue = null;
		private ArrayList modalMessageList = null;
		private ArrayList calculatedFieldList = null;
		private Hashtable dataTable = null;
		private bool isCloseDoc = false;
		private bool isPromptToSaveChanges = false;
		//视图是否切换了,如果切换了,同时ShowTaskPaneOnlyWhileButtonClicked为true,不显示TaskPane.
		//注意,IsViewSwitched只是用来判断是否在表单处理过程中被指示切换视图,而不包括CMD_UPDATE_View.
		private bool isViewSwitched = false;
		//CID 0400 //2009.12.02 //Begin
		//用来标识视图是否刚刚被打开.
		private bool isOnOpenView = false;
		//CID 0400 //2009.12.02 //End
		private Hashtable dataAdapterTable = null;

		private ArrayList unloadDataObjectList = null;
		private ArrayList unauthorizedConnectionList = null;
		private ArrayList loginConnectionList = null;

		private ArrayList textAreaIdList = null;

		//保持XMLNode和XmlNode之间的对应关系,防止XMLNode重复创建,并保证在表单代码里 xmlNode1 == xmlNode2 的判断可以执行.
		//尝试过使用==运算符重载,但是运算符重载没有被调用,似乎ScriptEngine直接比较地址了,因此必需使用XMLNode缓存.
		private Hashtable codeNodeTable = null;
		//用于保存执行过OnAfterChange的Node的执行次数,不能超过15次.
		private Hashtable afterChangeTable = null;
		//用于保存要输出的MHT文件路径,目前只支持MHT.
		private Export export = null;

		//用于保存在客户端运行的JavaScript代码.
		private ArrayList clientCodeList = null;

		//用于保持form code的缓存数据.将在FormSession中使用,一般只存储string数据.
		private string cacheXml = null;
		
		private InfoJetSoft.Service.Util.ExtXdFormattingFunction extFormatting = null;
		private InfoJetSoft.Service.Util.ExtXdImageFunction extImage = null;
		private InfoJetSoft.Service.Util.ExtXdXDocFunction extXDoc = null;
		private InfoJetSoft.Service.Util.ExtXdDateFunction extDate = null; 
		private InfoJetSoft.Service.Util.ExtXdUtilFunction extUtil = null;
		private InfoJetSoft.Service.Util.ExtXdMathFunction extMath = null;
		private InfoJetSoft.Service.Util.ExtMsxslFunction extMsxsl = null;
		private InfoJetSoft.Service.Util.ExtIpAppFunction extIpApp = null;
		//CID 0500 //2010.01.19 //Begin
		private InfoJetSoft.Service.Util.ExtXdExtensionFunction extExtension = null;
		//CID 0500 //2010.01.19 //End
		
		private HttpContext httpContext = null;
		private InfoJetContext jetContext = null;
		private Hashtable paramTable = null;

		private object managedCodeModel = null;
		private ScriptControlContext scriptControlContext = null;

		private bool isPrintOut = false;
		private TaskPane taskPane = null;
		private MailEnvelope mailEnvelope = null;
		private SelectTextNode selectTextNode = null;
		private XmlNode selectNode = null;

		//当执行不是非ValueChangeNode的OnValidate时,使用这个标识停止Alert(),SelectText()等用户界面操作.
		private bool disableAction = false;
		//标识表单是否完成Load,将在FormBuildHTMLDocWorker.buildHTMLDoc中设置为true.
		//在XDocument.View中BuildForm时,isFormLoaded为true才返回View,否则返回null.
		private bool isFormLoaded = false;

		private string queryADODataSetId = null;

		//表单的唯一Id，主要用于在HttpSession中缓存表单数据。
		private string id = null;

		//是否只运行ClientCode.
		private bool runClientCodeOnly = false;

		//标识是否Dom是只读的,一般在FormBuildFieldListByXMLDocWorker.buildFieldListByXMLDoc(form,false);之后表单Dom成为只读.
		private bool isDomReadonly = false;

		private int schemaValiResult;
		private string errCondValiModalMessage = null;
		//存储所有的错误。
		private ArrayList fieldErrorList;

		//用于保存恢复了BASE64内容结点的Hashtable.
		private Hashtable restoredBASE64NodeTable = null;
		//用于保存缓存了BASE64内容结点的Hashtable.
		private Hashtable cachedBASE64NodeTable = null;

		//CID 0216 //2009.01.23 //Begin
		private ArrayList contextNodeList;
		//CID 0216 //2009.01.23 //End

		//CID 0369 //2009.07.18 //Begin
		private string newFormPublishUrl = null;
		//CID 0369 //2009.07.18 //End

		//CID 0410 //2009.09.28 //Begin
		//CID 0412 //2009.10.12 //Begin
		private ArrayList changedBase64NodeList = null;
		//CID 0412 //2009.10.12 //End
		//CID 0410 //2009.09.28 //End

		//CID 0474 //2009.12.23 //Begin
		private FormLogger logger = new FormLogger();
		//CID 0474 //2009.12.23 //End

        //CID 0500 //2010.07.28 //Begin
        private Hashtable psviTable = new Hashtable();
        //CID 0500 //2010.07.28 //End

        //CID 0664 //2010.10.05 //Begin
        private ArrayList formFieldHTMLElementList = null;
        private string cachedOldValue = null;
        //CID 0664 //2010.11.02 //End

        //CID 0761 //2011.01.13 //Begin
        private ArrayList cachedImageNodeIdList = null;
        //CID 0761 //2011.01.13 //End

        //CID 0828 //2011.03.10 //Begin
        private int focusItemIndex = -1;
        //CID 0828 //2011.03.10 //End

        //CID 0749 //2011.09.04 //Begin
        private ArrayList signedDataInfoList = null;
        //CID 0749 //2011.09.04 //End

        //CID 1138 //2012.03.19 //Begin
        //CID 1137 //2012.03.19 //Begin
        private bool operationFailed = false;
        //CID 1137 //2012.03.19 //End
        //CID 1138 //2012.03.19 //End

        //CID 1171 //2012.02.24 //Begin
        private ArrayList datePickerIdList = null;
        //CID 1171 //2012.02.24 //End

		public InfoJetSoft.Service.Util.ExtXdFormattingFunction ExtFormatting 
		{
			get {
				return this.extFormatting;
			}
			
			set {
				this.extFormatting = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtXdImageFunction ExtImage {
			get {
				return this.extImage;
			}
			
			set {
				this.extImage = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtXdXDocFunction ExtXDoc {
			get {
				return this.extXDoc;
			}
			
			set {
				this.extXDoc = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtXdDateFunction ExtDate {
			get {
				return this.extDate;
			}
			
			set {
				this.extDate = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtXdUtilFunction ExtUtil {
			get {
				return this.extUtil;
			}
			
			set {
				this.extUtil = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtXdMathFunction ExtMath {
			get {
				return this.extMath;
			}
			
			set {
				this.extMath = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtMsxslFunction ExtMsxsl 
		{
			get 
			{
				return this.extMsxsl;
			}
			
			set 
			{
				this.extMsxsl = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtIpAppFunction ExtIpApp
		{
			get 
			{
				return this.extIpApp;
			}
			
			set 
			{
				this.extIpApp = value;
			}	
		}

		public InfoJetSoft.Service.Util.ExtXdExtensionFunction ExtExtension
		{
			get
			{
				return this.extExtension;
			}
			set
			{
				this.extExtension = value;
			}
		}


		public Form()
		{
			this.schemaValiResult = JetConstant.DATAVALI_NOTHING;
			this.fieldList = new ArrayList();
			this.piFieldList = new ArrayList();
			this.modalMessageList = new ArrayList();
			this.dataAdapterTable = new Hashtable();
			this.dataTable = new Hashtable();
			this.unloadDataObjectList = new ArrayList();
			this.unauthorizedConnectionList = new ArrayList();
			this.loginConnectionList = new ArrayList();
			this.textAreaIdList = new ArrayList();
			this.fieldErrorList = new ArrayList();
		}

		private string exportedPrintableHtml = null;
		public string ExportedPrintableHtml
		{
			get
			{
				return this.exportedPrintableHtml;
			}
			set
			{
				this.exportedPrintableHtml = value;
			}
		}

		//调用Managed form code 上的自定义方法,必须是public方法.
		public object CallManagedCodeMethod( string methodName, object[] parameters )
		{
			ManagedAssembly managedAssembly = this.Manifest.ManagedAssembly;
			if( managedAssembly != null )
			{
				if( this.ManagedCodeModel == null )
				{
					this.ManagedCodeModel = managedAssembly.RootAssembly.CreateInstance( managedAssembly.ModelType.FullName );
				}
				object formCodeModel = this.ManagedCodeModel;
				foreach( System.Reflection.MethodInfo method in formCodeModel.GetType().GetMethods() )
				{
					if( method.Name.Equals( methodName ) )
					{
						return method.Invoke( formCodeModel, parameters );
					}
				}
			}
			return null;
		}

		//查找XmlFile数据源中的XmlDocument.
		public XmlDocument FindStaticXmlFileDataObjectDoc( string dataObjectName )
		{
			foreach( DataObject dataObject in this.Manifest.DataObjectList )
			{
				if( dataObject.Name.Equals( dataObjectName ) )
				{
					if( dataObject.FileAdapter != null )
					{
						return dataObject.FileAdapter.Doc;
					}
				}
			}
			return null;
		}

        //CID 0755 //2011.01.14 //Begin
        private XsltArgumentList xsltArgList = null;
        //CID 0755 //2011.01.14 //End

        //CID 0755 //2011.01.14 //Begin
        public XsltArgumentList XsltArgList
        {
            get
            {
                if (this.xsltArgList == null)
                {
                    this.xsltArgList = new XsltArgumentList();
                    if (this.ExtFormatting == null)
                    {
                        this.ExtFormatting = new InfoJetSoft.Service.Util.ExtXdFormattingFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDFORMATTING, this.ExtFormatting);

                    if (this.ExtImage == null)
                    {
                        this.ExtImage = new InfoJetSoft.Service.Util.ExtXdImageFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDIMAGE, this.ExtImage);

                    if (this.ExtXDoc == null)
                    {
                        this.ExtXDoc = new InfoJetSoft.Service.Util.ExtXdXDocFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDXDOC, this.ExtXDoc);

                    if (this.ExtDate == null)
                    {
                        this.ExtDate = new InfoJetSoft.Service.Util.ExtXdDateFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDDATE, this.ExtDate);

                    if (this.ExtUtil == null)
                    {
                        this.ExtUtil = new InfoJetSoft.Service.Util.ExtXdUtilFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDUTIL, this.ExtUtil);

                    if (this.ExtMath == null)
                    {
                        this.ExtMath = new InfoJetSoft.Service.Util.ExtXdMathFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDMATH, this.ExtMath);

                    if (this.ExtMsxsl == null)
                    {
                        this.ExtMsxsl = new InfoJetSoft.Service.Util.ExtMsxslFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDMSXSL, this.ExtMsxsl);

                    if (this.ExtIpApp == null)
                    {
                        this.ExtIpApp = new InfoJetSoft.Service.Util.ExtIpAppFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_IPAPP, this.ExtIpApp);

                    //CID 0500 //2010.01.19 //Begin
                    if (this.ExtExtension == null)
                    {
                        this.ExtExtension = new ExtXdExtensionFunction(this);
                    }
                    this.xsltArgList.AddExtensionObject(JetConstant.URI_XDEXTENSION, this.ExtExtension);
                    //CID 0500 //2010.01.19 //End
                }
                return this.xsltArgList;
            }
        }
        //CID 0755 //2011.01.14 //End
	}
}